化学のための Pythonによるデータ解析・機械学習入門
Pythonで自然科学のデータ解析を扱った入門書は意外とない(データサイエンスを除く)
化学・工学データを使える知識に変える世界でたった一つの研究室を標榜している
目次を見ても内容が異常に充実しているのでかなりよさそう
機械学習を何かの応用に用いる本は過去にも読んだもののそもそもが難しすぎて(金融工学とか)ユースケースがあまり頭に入ってこなかった
けど化学だったら過去取り組んでいたことがあるので実用レベルまで持っていけるかも
特徴量ごとに、特徴量からその特徴量の平均値を引き、その後に特徴量の標準偏差でその特徴量を割る
全ての特徴量の平均値は0に、標準偏差は1になる
PCA; Principal Component Analysis 特徴量が4つ以上ある多変量データにおいて、すべての特徴量を考慮した「散布図」を作成できる
低次元化、つまり少数のパラメータ(主成分)に情報を圧縮できる
スコアの二乗和が最大になるようなt軸のこと
各サンプルからt軸に対して垂線を下ろした時の、t軸上の座標
制約条件の式を満たしながらSが最大となる(p1, p2)を求める
行列で表現
行列式$ X^T X - \lambda Iが0であることが必要
第1主成分と第2主成分との内積は0、つまり無相関になっている
$ X^T Xの固有値や固有ベクトルを求めることと言える
PCAモデル
データセットから規則性のない残差を取り除いた、規則性のある部分
特徴量や主成分のもつ情報量は、それぞれ特徴量や主成分の分散とする
二つの主成分で表現できるデータセットX内の情報量の割合は、主成分の分散から計算される
オートスケーリングされていたら1
各種成分の分散を全情報量nで割ったもの
クラスター間の距離の定義の仕方
最近接法
再遠接法
重心法
平均距離法
ウォード法
ウォード法
どの2つのクラスターを結合するか決める方法の一つ
クラスター内のサンプルのばらつきを考慮して、結合前後のばらつきの変化が最小となる2つのクラスターを結合する方法
説明変数xによって目的変数yを回帰モデルy=f(x)の形でどのくらい説明できるかを定量的に分析すること
yの値が不明なサンプルに対してxからyを正確に推定すること
$ y = ax + b
オートスケーリングして $ y = ax
誤差をfとして $ y = ax + f
誤差fの二乗和Sが最小になるようにaを決定
実験誤差や測定誤差などのノイズにもモデルが適合することで、yの誤差が非常に小さいモデルが構築sれてしまい、新しいデータにおけるyの誤差が大きくなってしまう現象
PCR; Principal Comonent Regression 多重共線性に対処するため、多重共線性のある説明変数を事前に削除することで、相関係数の絶対値の小さい説明変数のセットのみを選択する
削除するときにyをせ雨t名するために必要な説明変数を取り除いてしまう危険
そこで説明変数を選択せずに、PCAで説明変数を互いに無相関な主成分に変換してから、主成分と目的変数との間でOLSを行うこと
多重共線性
multicollinearityまたはcollinearity
オーバーフィッティングする要因の一つ
説明変数の間の相関が強いこと
線形重回帰分析
事前に決める必要のあるパラメータのこと
N個のグループに分割するとき N-fold CV
Nがサンプル数に等しいとき leave-one-out CV
https://gyazo.com/14662580201453f56a1e3c639546fe4b
PLS; Partial Least Squares 主成分間の無相関性を維持しながら目的変数の情報を考慮して主成分を計算し、主成分と目的変数との間で回帰モデルを構築する手法の一つ
目的変数と主成分との間の共分散が最大になるように主成分軸の方向を決める
目的変数の情報をなるべく表現した主成分が望ましいから
共分散の最大化
内積の最大化と同じこと
非線形の回帰分析
各説明変数を二乗した項(二乗項)や、すべての組み合わせで二つの説明変数を掛け合わせた項(交差項、クロスターム)を説明変数に追加
SVR; Support Vectore Regression 説明変数を変換せずに目的変数との間の非線形性を考慮した回帰モデルを構築できる手法
回帰係数 $ a_{NSVR} をなんとかして決める
SVRでは誤差だけでなく、回帰係数の大きさも一緒の小さくする
誤差関数hを用いる
-εからεまで誤差の不感帯を設定することで、ノイズの影響を受けにくくする 非線形変換した二つのサンプルg(xi), g(xj)の内積
サンプルの誤差の大きさを表す変数
max(...) は微分のとき扱いにくいから
最大化もしくは最小化したい関数が変数の二次関数であり、制約条件が変数の一次関数である最適化問題 サポートベクター
ラグランジュ乗数とそれと対応する制約式の積が0となる条件
εチューブ状のサンプルもしくはεチューブの外側のサンプルのこと
https://gyazo.com/bd0e870293780b9f10b730b2cd760579
クラスもしくはカテゴリーを対象にして、クラスの情報(正解の情報)が不明なサンプルに対して、そのサンプルのクラスを他の情報から正確に推定すること
k-NN; k-Nearest Neighbors algorithm
xつクラスがすでにわかっているサンプルの中から、クラスを推定したいサンプルに最も近いk個のサンプルを選び、それらのクラスで多数決をとってクラスを決定する方法
kには3, 5, 7が用いられることが多い
クラス分類モデルの推定性能の評価
評価のために必ず確認しよう
正解率を出す
Kappa係数
各クラスのサンプル数の割合を考慮に入れた指標
分け方
True / False
正解か誤りか
Positive / Negative
二つのクラスを指す
FP:偽陽性、FN:偽陰性
がん診断ではFPが多い方がマシ
SVM; Support Vector Machine
マージンと最も近いサンプルとの距離の2倍が大きくなるように各説明変数の重み$ a_SVNを決める
クラス1とクラス-1を判別する境界の式
これを最大化する
逆数をとり、$ a_SVNを2乗して最小化問題にする
正しく判別できないサンプル
スラック変数ξで評価
これも最小化する
Decision Tree: DT
各領域内に同じクラスが固まるように適切に領域に分割する問題
ジグザク
モデルが木構造で表される
最も小さい説明変数としきい値の組合せにする
分割後の二つのノードにおけるそれぞれの評価関数E1, E2の和
$ E_i = \Sigma_{k = 1}^{K}p_{i, k} (1 - \ln{p_{i, k}})
$ E_i = - \Sigma_{k = 1}^{K}p_{i, k} \ln{p_{i, k}}
DTモデルをたくさん作り、新しいサンプルにおけるクラスの推定結果を、各DTモデルの推定結果を多数決することで決める
複数のモデルを構築して、それらを総合的に用いて新しいサンプルの推定をする方法
サブデータセットごとに選択されなかったサンプルのこと
これにより外部データに対する推定性能を評価できる
OOB正解率
i番目のサンプルがOOBとなる決定木だけ集めて、i番目のサンプルのクラスを推定する
回帰モデルやクラス分類モデルモデルが本来の推定性能を発揮できる説明変数のデータ領域のこと モデルを構築するときに用いたデータセットに対して示す性能
範囲を設定
適切にADを設定するための指標
たくさんのモデルを構築し、それら全てを用いて推定性能を向上させることを目的とした方法
統合には各サブモデルの推定値の平均値を計算したり(回帰モデル)、多数決を取ったりする(クラス分類)
逆解析
モデルを用いて、目的関数が望ましい値となるような説明変数の値を設計すること
ベイズ最適化
推定値のばらつき
構造記述子
分子記述子
化学構造を数値化して特徴量にしたもの
構造物性相関
構造活性相関
構造毒性相関
定量的…
rdkit
数値化しやすい形式で化学構造を数値化する方法
SMILES
MOL file
描画ソフト ChemDraw JS
Marvin
Marvin Sketch
データベース
ChEMBL
PubChem
化学構造の設計の難しさ
記述子やフィンガープリントのある値から化学構造を作れるとは限らない
そこで、コンピュータで自動的に化学構造を生成する
アルゴリズム
RECAP
BRICS
ほかにDOGSなど
Structure-Data File
SDF
目次
第1部 Pythonと統計の基礎知識
1章 Pythonの基礎
1.1 Python の使い方
1.2 データセットの読み込み・保存
2章 データの図示
2.1 ヒストグラム
2.2 箱ひげ図
2.3 散布図
2.4 相関行列
第2部 データ解析・機械学習の基礎
3章 多変量データとデータの可視化
3.1 多変量データ
3.2 データの前処理
3.3 主成分分析
3.4 階層的クラスタリング
3.5 非線形の可視化手法
4章 化学データを用いたモデリング
4.1 回帰分析
4.2 クラス分類
5章 回帰モデル・クラス分類モデルの適用範囲
5.1 モデルの適用範囲とは?
5.2 データ密度
5.3 アンサンブル学習法
第3部 化学・化学工学データでの実践のしかた
6章 材料設計・分子設計・医薬品設計
6.1 材料設計
6.2 分子設計・医薬品設計
6.3 化学構造の表現方法
6.4 化合物群の扱い
6.5 化学構造の数値化
6.6 化学構造の生成
6.7 化合物のデータセットを扱うときの注意点
6.8 具体的なデータセットを用いた解析
7章 時系列データの解析
7.1 化学プラントにおける推定制御・ソフトセンサー
7.2 時系列データ解析の特徴
7.3 モデルの劣化と適応型ソフトセンサー
7.4 データ解析・機械学習による化学プラントのプロセス管理(異常検出・異常診断)